package com.itcam.jsp;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Author:Cammy.Wu
 * Date:2024-04-30
 * Description:快速返回一个jsp页面
 */

@Controller
@RequestMapping("jsp")
public class JspController {

    /**
     * TODO:快速查找视图
     *      1.方法的返回值是字符串类型
     *      2.不能添加@ResponseBody，直接返回字符串给浏览器，不找视图，不走视图解析器
     *      3.返回值 对应中间的视图名称
     * @param request
     * @return
     */

    /**
     *  跳转到提交文件页面  /views/index
     *
     *  如果要返回jsp页面!
     *     1.方法返回值改成字符串类型
     *     2.返回逻辑视图名即可
     *         <property name="prefix" value="/WEB-INF/views/"/>
     *            + 逻辑视图名 +
     *         <property name="suffix" value=".jsp"/>
     */

    @GetMapping("index")
    public String index(HttpServletRequest request){
        request.setAttribute("data","hello jsp!!!");
        System.out.println("JspController.index");
        return "index";
    }

    //转发
    @GetMapping("forward")
    public String forward(){
        System.out.println("JspController.forward");
        return "forward:/jsp/index";
    }

    /**
     * 重定向：
     *      1.方法返回值写成字符串类型
     *      2.不能添加responseBody
     *      3.返回字符串前面redirect:/重定向的地址
     */

    /**
     * 路径细节：【不适用springmvc request response】
     *      转发是项目下的资源跳转 路径：项目下的地址 /jsp/index 忽略applicationContext
     *      重定向项目下的资源可以是项目外的地址  重定向属于二次请求   路径：项目下的地址   全地址 /springmvc/jsp/index    不忽略applicationContext
     * 使用springmvc路径语法：
     *      “forward:路径 | redirect: 路径” 重定向 资源的地址也不需要写项目的根路径    jsp/index
     *      转发和重定向的地址都一样了
     *
     */

    // 重定向
    @GetMapping("redirect")
    public String redirect(){
        System.out.println("JspController.redirect");
        return "redirect:/jsp/index";
    }

    public String redirectBaidu(){
        System.out.println("JspController.redirectBaidu");
        return "redirect:http://www.baidu.com";
    }

}
